From c9db5487280aedd9aa1eb65f00654b819deed3ec Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Villemot?= Date: Fri, 13 Feb 2026 15:01:49 +0100 Subject: [PATCH] Adapt build system for the absence of lapack-netlib/ and relapack directories. Forwarded: not-needed Last-Update: 2026-02-03 Instead use the PIC libraries provided by packages liblapack-dev and liblapack64-dev, stripping from them the symbols that are overridden by OpenBLAS. Last-Update: 2026-02-03 Gbp-Pq: Name no-embedded-lapack.patch --- Makefile | 100 +++++---------------------------------------- Makefile.install | 26 ------------ Makefile.system | 2 - interface/Makefile | 7 ++++ 4 files changed, 17 insertions(+), 118 deletions(-) diff --git a/Makefile b/Makefile index 90de509..86dffd8 100644 --- a/Makefile +++ b/Makefile @@ -291,95 +291,20 @@ hpl_p : fi; \ done -netlib : lapack_prebuild -ifneq ($(NO_LAPACK), 1) - @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapacklib - @$(MAKE) -C $(NETLIB_LAPACK_DIR) tmglib -endif -ifneq ($(NO_LAPACKE), 1) - @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapackelib -endif - -ifeq ($(NO_LAPACK), 1) -re_lapack : +netlib : lapack-netlib +lapack-netlib: + mkdir lapack-netlib +ifeq (,$(filter libopenblas64%,$(LIBNAME))) + cd lapack-netlib && ar -x /usr/lib/$$(dpkg-architecture -q DEB_HOST_MULTIARCH)/liblapack_pic.a else -re_lapack : - @$(MAKE) -C relapack + cd lapack-netlib && ar -x /usr/lib/$$(dpkg-architecture -q DEB_HOST_MULTIARCH)/liblapack64_pic.a endif + make -C interface delete-duplicate-lapack-objects + ar -ru $(LIBNAME) `LC_ALL=C ls lapack-netlib/*` -prof_lapack : lapack_prebuild - @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapack_prof - -lapack_prebuild : -ifeq ($(NO_LAPACK), $(filter 0,$(NO_LAPACK))) - -@echo "FC = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc -ifeq ($(F_COMPILER), GFORTRAN) - -@echo "override FFLAGS = $(LAPACK_FFLAGS) -fno-tree-vectorize" >> $(NETLIB_LAPACK_DIR)/make.inc -else - -@echo "override FFLAGS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc -endif - -@echo "FFLAGS_DRV = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "POPTS = $(LAPACK_FPFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "FFLAGS_NOOPT = -O0 $(LAPACK_NOOPT)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "PNOOPT = $(LAPACK_FPFLAGS) -O0" >> $(NETLIB_LAPACK_DIR)/make.inc -ifeq ($(C_COMPILER)$(F_COMPILER)$(USE_OPENMP), CLANGGFORTRAN1) - -@echo "LDFLAGS = $(FFLAGS) $(EXTRALIB) -lomp" >> $(NETLIB_LAPACK_DIR)/make.inc -else -ifeq ($(C_COMPILER)$(F_COMPILER)$(USE_OPENMP), CLANGIBM1) - -@echo "LDFLAGS = $(FFLAGS) $(EXTRALIB) -lomp" >> $(NETLIB_LAPACK_DIR)/make.inc -else - -@echo "LDFLAGS = $(FFLAGS) $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc -endif -endif - -@echo "CC = $(CC)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "override CFLAGS = $(LAPACK_CFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "AR = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "ARFLAGS = $(ARFLAGS) -ru" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "RANLIB = $(RANLIB)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "LAPACKLIB = ../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "TMGLIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "BLASLIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "LAPACKELIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "LAPACKLIB_P = ../$(LIBNAME_P)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "SUFFIX = $(SUFFIX)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "PSUFFIX = $(PSUFFIX)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "CEXTRALIB = $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc -ifeq ($(F_COMPILER), GFORTRAN) - -@echo "TIMER = INT_ETIME" >> $(NETLIB_LAPACK_DIR)/make.inc -ifdef SMP -ifeq ($(OSNAME), WINNT) - -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc -else ifeq ($(OSNAME), Haiku) - -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc -else - -@echo "LOADER = $(FC) -pthread" >> $(NETLIB_LAPACK_DIR)/make.inc -endif -else - -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc -endif -else - -@echo "TIMER = NONE" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc -endif -ifeq ($(BUILD_LAPACK_DEPRECATED), 1) - -@echo "BUILD_DEPRECATED = 1" >> $(NETLIB_LAPACK_DIR)/make.inc -endif -ifeq ($(BUILD_SINGLE), 1) - -@echo "BUILD_SINGLE = 1" >> $(NETLIB_LAPACK_DIR)/make.inc -endif -ifeq ($(BUILD_DOUBLE), 1) - -@echo "BUILD_DOUBLE = 1" >> $(NETLIB_LAPACK_DIR)/make.inc -endif -ifeq ($(BUILD_COMPLEX), 1) - -@echo "BUILD_COMPLEX = 1" >> $(NETLIB_LAPACK_DIR)/make.inc -endif -ifeq ($(BUILD_COMPLEX16), 1) - -@echo "BUILD_COMPLEX16 = 1" >> $(NETLIB_LAPACK_DIR)/make.inc -endif - -@echo "LAPACKE_WITH_TMG = 1" >> $(NETLIB_LAPACK_DIR)/make.inc - -@cat make.inc >> $(NETLIB_LAPACK_DIR)/make.inc -endif +clean:: + rm -rf lapack-netlib large.tgz : ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN))) @@ -450,10 +375,5 @@ ifeq ($(OSNAME), Darwin) endif @rm -f Makefile.conf config.h Makefile_kernel.conf config_kernel.h st* *.dylib @rm -f cblas.tmp cblas.tmp2 - @touch $(NETLIB_LAPACK_DIR)/make.inc - @$(MAKE) -C $(NETLIB_LAPACK_DIR) clean - @rm -f $(NETLIB_LAPACK_DIR)/make.inc - @$(MAKE) -C relapack clean @rm -f *.grd Makefile.conf_last config_last.h - @(cd $(NETLIB_LAPACK_DIR)/TESTING && rm -f x* *.out testing_results.txt) @echo Done. diff --git a/Makefile.install b/Makefile.install index 5fc6b95..da9a92e 100644 --- a/Makefile.install +++ b/Makefile.install @@ -92,32 +92,6 @@ endif endif ifneq ($(OSNAME), AIX) -ifneq ($(NO_LAPACKE), 1) - @cp $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke.h lapacke_h.tmp -ifdef SYMBOLPREFIX - @sed 's/LAPACKE_[a-z1-9].[^() ]*/$(SYMBOLPREFIX)&/g' lapacke_h.tmp > lapacke.tmp2 - @mv lapacke.tmp2 lapacke_h.tmp -endif -ifdef SYMBOLSUFFIX - @sed 's/LAPACKE_[a-z1-9].[^() ]*/&$(SYMBOLSUFFIX)/g' lapacke_h.tmp > lapacke.tmp2 - @mv lapacke.tmp2 lapacke_h.tmp -endif - @-install -m644 lapacke_h.tmp "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke.h" - @echo Copying LAPACKE header files to $(DESTDIR)$(OPENBLAS_INCLUDE_DIR) - @cp $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapack.h lapack_h.tmp -ifdef SYMBOLPREFIX - @sed 's/LAPACK_[a-z1-9]*(\.\.\.)/$(SYMBOLPREFIX)&/g' lapack_h.tmp > lapack.tmp2 - @mv lapack.tmp2 lapack_h.tmp -endif -ifdef SYMBOLSUFFIX - @sed 's/\(#define $(SYMBOLPREFIX)LAPACK_[a-z1-9].*\)\((...)\)/\1$(SYMBOLSUFFIX)\2/g' lapack_h.tmp > lapack.tmp2 - @mv lapack.tmp2 lapack_h.tmp -endif - @-install -m644 lapack_h.tmp "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapack.h" - @-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_config.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_config.h" - @-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_mangling_with_flags.h.in "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_mangling.h" - @-install -m644 $(NETLIB_LAPACK_DIR)/LAPACKE/include/lapacke_utils.h "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/lapacke_utils.h" -endif #for install static library ifneq ($(NO_STATIC),1) diff --git a/Makefile.system b/Makefile.system index ab463f5..f77785b 100644 --- a/Makefile.system +++ b/Makefile.system @@ -44,8 +44,6 @@ else ifeq ($(ARCH), zarch) override ARCH=zarch endif -NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-netlib - # Default C compiler # - Only set if not specified on the command line or inherited from the environment. # - CC is an implicit variable so neither '?=' or 'ifndef' can be used. diff --git a/interface/Makefile b/interface/Makefile index 83a894b..954dddb 100644 --- a/interface/Makefile +++ b/interface/Makefile @@ -2601,3 +2601,10 @@ cgemm_batch_strided.$(SUFFIX) cgemm_batch_strided.$(PSUFFIX) : gemm_batch_stride zgemm_batch_strided.$(SUFFIX) zgemm_batch_strided.$(PSUFFIX) : gemm_batch_strided.c ../param.h $(CC) -c $(CFLAGS) -UCBLAS $< -o $(@F) + +# The list of symbols to be removed can be seen in the diff between LAPACK's +# original SRC/Makefile and the version of that same file that is included in +# OpenBLAS (unfiltered) tarball +delete-duplicate-lapack-objects: + if test -d ../lapack-netlib; then cd ../lapack-netlib \ + && rm $(SLAPACKOBJS) $(DLAPACKOBJS) $(CLAPACKOBJS) $(ZLAPACKOBJS) lsame.o xerbla.o; fi -- 2.30.2